import cv2
from ultralytics import YOLO

# 加载预训练的 YOLOv8 模型
model = YOLO('yolov8n.pt')

# 打开视频流，可以替换为具体的视频文件路径或摄像头设备编号
cap = cv2.VideoCapture('2.mp4')

while True:
    # 读取视频帧
    ret, frame = cap.read()
    if not ret:
        break

    # 使用 YOLOv8 模型进行行人检测
    results = model(frame, classes=0)  # classes=0 表示只检测行人

    # 遍历检测结果
    for result in results:
        boxes = result.boxes
        for box in boxes:
            # 获取检测框的坐标
            x1, y1, x2, y2 = box.xyxy[0].cpu().numpy().astype(int)

            # 在图像上绘制检测框
            cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 255, 0), 2)

            # 计算行人的中心位置
            center_x = (x1 + x2) // 2
            center_y = (y1 + y2) // 2

            # 输出行人位置信息
            print(f"行人位置: ({center_x}, {center_y})")

    # 显示处理后的帧
    cv2.imshow('Pedestrian Detection', frame)

    # 按 'q' 键退出循环
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# 释放资源
cap.release()
cv2.destroyAllWindows()
